// 当然，以下是这些Go语言注释的中文翻译：
// 
// ```go
// 版权所有 2012 The Go 项目作者。保留所有权利。
// 使用该源代码受以BSD风格许可条款的约束，
// 该许可条款可在LICENSE文件中找到。
// ```
// md5:a2b8441cca608eb8

// 对标准“os”包的扩展。 md5:71bd4eabc1a8e9ea
package osext

import "path/filepath"

// Executable 返回一个可以用来重新调用当前程序的绝对路径。
// 在当前程序退出后，该路径可能不再有效。
// md5:0fc422faa492519c
func Executable() (string, error) {
	p, err := executable()
	return filepath.Clean(p), err
}

// 当然，以下是Go语言注释的中文翻译：
// 
// ```go
// 返回与可执行文件相同的路径，但只返回文件夹路径。
// 排除可执行文件名以及任何尾随斜杠。
// ```
// 
// 希望这对你有帮助！如果有其他问题，请随时告诉我。
// md5:293706c8cedf412a
func ExecutableFolder() (string, error) {
	p, err := Executable()
	if err != nil {
		return "", err
	}

	return filepath.Dir(p), nil
}
